package fr.babos.touch.events 
{
	import flash.events.Event;
	import flash.geom.Point;
	
	/**
	 * @author ZoulouX
	 */
	public class GestureTouchDragEvent extends GestureTouchEvent
	{
		/**
		 * Début d'un déplacement avec un ou plusieurs doigt
		 */
		public static const START_DRAG				:String 			= "gestureTouchStartDrag";
		
		/**
		 * Déplacement avec un ou plusieurs points
		 */
		public static const DRAGGING				:String 			= "gestureTouchDragging";
		
		/**
		 * Déplacement avec un points
		 */
		public static const SINGLE_DRAGGING			:String 			= "gestureTouchSingleDragging";
		
		/**
		 * Déplacement avec plusieurs points
		 */
		public static const MULTI_DRAGGING			:String				= "gestureTouchMultiDragging"
		
		/**
		 * Fin du déplacement
		 */
		public static const STOP_DRAG				:String 			= "gestureTouchStopDrag";
		
		/**
		 * Le drag est vérouille (point posé sur l'élément)
		 */
		public static const LOCK_DRAG				:String				= "gestureTouchLockDrag";
		
		/**
		 * Le drag est dévérouillé (plus de point posé sur l'élément)
		 */
		public static const UNLOCK_DRAG				:String				= "gestureTouchUnlockDrag";
		
		
		/**
		 * La position absolue du drag
		 */
		public var position							:Point;
		
		/**
		 * Le déplacement en x
		 */
		public var xDelta							:Number				= 0;
		
		/**
		 * Le déplacement en y
		 */
		public var yDelta							:Number				= 0;
		
		/**
		 * Si le déplacement est vertical
		 */
		public var isVertical						:Boolean;
		
		/**
		 * Si le déplacement est horizontal
		 */
		public var isHorizontal						:Boolean;
		
		/**
		 * Si le déplacement est libre
		 */
		public var isBoth							:Boolean;
		
		
		/**
		 * Constructeur
		 * @param	type
		 * @param	bubbles
		 * @param	cancelable
		 */
		public function GestureTouchDragEvent (type:String, bubbles:Boolean = false, cancelable:Boolean = false)
		{
			super(type, bubbles, cancelable);
		}
		
		public override function clone ():Event
		{ 
			return new GestureTouchEvent(type, bubbles, cancelable);
		} 
		public override function toString ():String
		{ 
			return formatToString("GestureTouchDragEvent", "type", "bubbles", "cancelable", "eventPhase"); 
		}
	}
}